/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.edu.senaclem.persistencia;

import co.edu.senaclem.modelo.Comite;
import static co.edu.senaclem.persistencia.Persistencia.areadb;
import static co.edu.senaclem.persistencia.Persistencia.con;
import static co.edu.senaclem.persistencia.Persistencia.conectar;
import static co.edu.senaclem.persistencia.Persistencia.desconectar;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;

/**
 *
 * @author DILOVE
 */
@Stateless
public class ComiteDAO implements IComiteDAO {

    ISeguimientoDAO seguimientoDAO = new SeguimientoDAO();
    
    IPersonalDAO personalDAO = new PersonalDAO();

    public static ResultSet resSet = null;
    
    @Override
    public void registrar(Comite comite) throws Exception {
        try {
            if (conectar()) {
                String consulta = "insert into comite values("+comite.getDocumentoPersonal().getDocumento()+"," + comite.getNumeroSeguimiento().getCodigoseguimiento() + ",'" + comite.getCargo()+ "')";
                System.out.println("consulta "+consulta);
                areadb = con.createStatement();
                areadb.execute(consulta);
                desconectar();
            }
        } catch (RuntimeException e) {
            throw e;
        }
    }

    @Override
    public List<Comite> consultar(Integer numeroSeguimiento) throws Exception {
        try {
            Comite miComite = null;
            List<Comite> comiteSegui = new ArrayList<Comite>();
            if (conectar()) {
                String consulta = "Select * From comite where numeroseguimiento="+numeroSeguimiento+";";
                areadb = con.createStatement();
                resSet = areadb.executeQuery(consulta);

                while (resSet.next()) {
                    miComite = new Comite();
                    Long documentoP = resSet.getLong("documentopersonal");
                    miComite.setDocumentoPersonal(personalDAO.consultarPorId(documentoP));
                    Integer numeroS = resSet.getInt("numeroseguimiento");
                    miComite.setNumeroSeguimiento(seguimientoDAO.consultarPorNumero(numeroS));
                    miComite.setCargo(resSet.getString("cargo"));
                    comiteSegui.add(miComite);
                }
                resSet.close();
                desconectar();
            }

            return comiteSegui;
        } catch (RuntimeException e) {
            throw e;
        }
    }

    @Override
    public void retirar(Comite comite) throws Exception {
        try {
            if (conectar()) {
                String consulta = "delete from comite where documentopersonal=" + comite.getDocumentoPersonal().getDocumento() + " and numeroseguimiento="+comite.getNumeroSeguimiento().getCodigoseguimiento()+";";
                System.out.println("consulta para retirar de comite "+consulta);
                areadb = con.createStatement();
                areadb.execute(consulta);

                desconectar();
            }
        } catch (RuntimeException e) {
            throw e;
        }
    }

    @Override
    public Comite consultarPorNumero(Integer numeroSeguimiento, Long documentoPersonal) throws Exception {
        try {
            Comite miComite = null;
            if (conectar()) {
                String consulta = "Select * From comite where documentopersonal=" + documentoPersonal + " and numeroseguimiento="+numeroSeguimiento+";";
                areadb = con.createStatement();
                resSet = areadb.executeQuery(consulta);

                if (resSet.next()) {
                    miComite = new Comite();
                    Long documentoP = resSet.getLong("documentopersonal");
                    miComite.setDocumentoPersonal(personalDAO.consultarPorId(documentoP));
                    Integer numeroS = resSet.getInt("numeroseguimiento");
                    miComite.setNumeroSeguimiento(seguimientoDAO.consultarPorNumero(numeroS));
                    miComite.setCargo(resSet.getString("cargo"));
                }
                resSet.close();
                desconectar();
            }

            return miComite;
        } catch (RuntimeException e) {
            throw e;
        }
        
    }

    @Override
    public void modificar(Comite comite) throws Exception {        
        try {
            if (conectar()) {
                String consulta = "update comite set cargo='"+comite.getCargo()+"' where documentopersonal=" + comite.getDocumentoPersonal().getDocumento() + " and numeroseguimiento=" + comite.getNumeroSeguimiento().getCodigoseguimiento() + ";";
                System.out.println("consulta "+consulta);
                areadb = con.createStatement();
                areadb.execute(consulta);
                desconectar();
            }
        } catch (RuntimeException e) {
            throw e;
        }
    }

}
